package day12.HomeWork;

import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

//b.使用newFixedThreadPool处理批量任务
//题目描述：编写一个程序，使用newFixedThreadPool创建一个固定大小的线程池来处理一批任务。
//每个任务模拟一个耗时操作（例如，睡眠一段时间），并输出任务开始和结束的时间。
//要求：
//创建一个包含10个任务的列表，每个任务睡眠1-3秒之间的随机时间。
//使用固定大小为5的线程池来执行这些任务。
//输出每个任务的开始和结束时间，以及任务的总执行时间
public class Demo1 {
    public static void main(String[] args) {
        Random r = new Random();
        ExecutorService es = Executors.newFixedThreadPool(5);
        for (int i = 0; i < 10; i++) {
            int index = i + 1;
            es.execute(() -> {
                try {
                    long time = r.nextInt(2000) + 1000;
                    long start = System.currentTimeMillis();
                    System.out.println("任务" + index + "开始执行,开始时间:" + start);
                    Thread.sleep(time);
                    long end = System.currentTimeMillis();
                    System.out.println("任务" + index + "结束执行,结束时间:" + end + ",执行了:" + (end - start) + "ms");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
        }
        es.shutdown();
    }
}
